package ecole.infrastructure;


/**
 * Classe abstract Salle
 * Classe mere de tous les autres types de salle
 * 
 * @author Hadrien Luttiau
 *
 */
abstract public class Salle implements java.io.Serializable{

	private static final long serialVersionUID = 2L;
	protected boolean videoProjecteur = false;
	protected int nbPlaces = 0, nbPlaceMin,nbPlaceMax;
	protected int niveau;
	protected String id;
	protected boolean libre;
	
	public Salle () 
	{
		this.libre=true;
	};
	public Salle (boolean vp, int nbp, String id, int n) 
	{
		
		this.id=id;
		this.nbPlaces=nbp;
		this.niveau=n;
		this.videoProjecteur=vp;
		this.libre=true;
	};


	/**
	 * Set the value of videoProjecteur
	 * @param newVar the new value of videoProjecteur
	 */
	protected void setVideoProjecteur ( boolean newVar ) {
		videoProjecteur = newVar;
	}

	/**
	 * Get the value of videoProjecteur
	 * @return the value of videoProjecteur
	 */
	protected boolean getVideoProjecteur ( ) {
		return videoProjecteur;
	}

	/**
	 * Set the value of nbPlaces
	 * @param newVar the new value of nbPlaces
	 */
	protected void setNbPlaces ( int newVar ) {
		nbPlaces = newVar;
	}

	/**
	 * Get the value of nbPlaces
	 * @return the value of nbPlaces
	 */
	protected int getNbPlaces ( ) {
		return nbPlaces;
	}

	/**
	 * Set the value of id
	 * @param newVar the new value of id
	 */
	protected void setId ( String newVar ) {
		id = newVar;
	}

	/**
	 * Get the value of id
	 * @return the value of id
	 */
	public String getId ( ) {
		return id;
	}

	/**
	 * Set the value of niveau
	 * @param newVar the new value of niveau
	 */
	protected void setNiveau ( int newVar ) {
		niveau = newVar;
	}

	/**
	 * Get the value of niveau
	 * @return the value of niveau
	 */
	protected int getNiveau ( ) {
		return niveau;
	}
	public boolean isLibre() {
		return libre;
	}
	public void setLibre(boolean libre) {
		this.libre = libre;
	}
	
	public boolean equals(Object o)
	{
		if( o instanceof Salle)
			return false;
		else
		{
			Salle s = (Salle) o;
			if( s.getId() == this.getId())
				return false;
			return true;
		}
	}
	
	public String print(){
	    return getVideoProjecteur()+"#"+getNbPlaces()+"#"+id+"#"+niveau;
	}
	
	public String toString()
	{
		return "Salle "+id+" - "+this.getClass()+"\n";
	}

}
